assignment1 <<
Previous Next >> Portable system
Random grouping
請描述如何針對該課程進行有效的隨機分組,或者隨機進行點名?
測試程式(點選程式連結再貼上即可):
抽查的python程式
如果要使用python來進行亂數分組抽查的話,可以導入random來從列表中隨機抽出所需要的n個不同元素,如下面的程式執行之後,就可以亂數抽出4位。
import random
group = [4, 10, 12, 25, 32, 34, 38, 45, 50]
team = random.sample(group, 4)
print (team)
再來是要讀取網頁資料的話,就要導入requests,使用get請求即可直接下載,例如member = requests.get("網址"),再用print(member.text)就可以印出來了如下。
import requests
web = "https://mdecourse.github.io/cd2020/downloads/2b_group_list.txt"
member = requests.get(web)
print(member.text)
如果使用讀取出的資料,還是無法使用的,因為member.text的性質是str字串,所以我就要將它變回原本的list列表,才可以進行亂數分組,改這個非常的簡單如下。
x = eval(member.text)
最後我整理出來的程式,雖然沒有老師這麼精美,但是也是可以進行亂數分組的抽查的,如果要改抽查人數,改y = random.sample(i,2)的數字即可。
最終程式碼
程式碼連結:抽查程式.py
import requests
import random
web = "https://mdecourse.github.io/cd2020/downloads/2b_group_list.txt"
member = requests.get(web)
#print(memder.text)
x=0
for i in eval(member.text):
y = random.sample(i,2)
x+=1
print("group"+ str(x))
print(y)
亂數分組的的python程式
一開始先從網頁上抓人員,這次跟上面的不太一樣,抓出來的本來就是str字串,所以必須把每個學號轉變為list列表,直接將f.text加上 .split() 來轉換,完成之後就可以使用,random.shuffle()來將整個順序打亂,再來設定一共要分幾組,再使用while迴圈來判斷每一組要有幾個人,使用if判斷是來中斷迴圈,len()是指一共有幾個數量的意思,要加組別的話就要再多寫一列,接著使用for 迴圈來從,剛剛算好的每組人數,例如:13、12、12、12,再使用一個for迴圈,來一個一個配置組人員,這時候直接使用迭代iter()的next(),來抓人員這樣子就不會重複了,最後再加上一些說明、分格、標題,就可以開始進行亂數分組了。
最終程式碼
程式碼連結:亂數分組.py
import requests
import random
web = "http://s1.mde.nfu.edu.tw:8000/?semester=1082&courseno=0780"
f = requests.get(web)
#print(type(f.text))
x = f.text.split()
#print(len(x))
#print(x)
random.shuffle(x)
group1,group2,group3,group4 = 0,0,0,0
while 1==1:
group1 += 1
if (group1+group2+group3+group4) == len(x):
break
group2 += 1
if (group1+group2+group3+group4) == len(x):
break
group3 += 1
if (group1+group2+group3+group4) == len(x):
break
group4 += 1
if (group1+group2+group3+group4) == len(x):
break
#print(group1,group2,group3,group4)
print("全班人數有"+str(len(x))+"人")
print("="*20)
grp_num = group1,group2,group3,group4
a = iter(x)
team = 0
for i in grp_num:
team += 1
print("group"+str(team)+" 共 "+str(i)+" 人")
for g in range(i):
print(next(a))
print("-" * 20)
assignment1 <<
Previous Next >> Portable system